#ifndef _ADJACENCY_H_
#define _ADJACENCY_H_

#include "common.h"

/* Lista de adjacentes e lista de pesos por adjacente */

typedef struct _adjnode {
  float w;   /* peso do no adjacente */
  int dx,dy; /* deslocamento para chegar ao no adjacente */   
} AdjNode;

typedef struct _adjlist { 
  AdjNode *adj; /* pixel adjacente */
  int        n; /* numero de pixels adjacentes */
} AdjList;

/* Funcoes para criar, ler e destruir lista de adjacentes. A primeira
   aloca memoria, a segunda ler de arquivo e armazena os deslocamentos
   e os pesos dos adjacentes lidos e a terceira libera a memoria
   alocada. */

AdjList   *CreateAdjList(int n); 
AdjList   *ReadAdjList(char *filename);
void       DestroyAdjList(AdjList **A);
AdjList   *CircularGaussian(float radius);

#endif
